﻿<?xml version="1.0" encoding="utf-8"?>
<!--

// Copyright 2008 Daniel Gray
//
// This file is part of Kale.
//
// Kale is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Kale is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Kale.  If not, see <http://www.gnu.org/licenses/>.
//
// Filename          : ExceptionClass.snippet
// Author            : Daniel Gray
// Created           : 15/04/2008
//
// -->
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
   <CodeSnippet Format="1.0.0">
      <Header>
         <Title>Exception Class</Title>
         <Description>Contains a general pattern for exception classes that contains all the default constructors.</Description>
         <Author>Daniel Gray</Author>
         <Keywords>
            <Keyword>Exception</Keyword>
            <Keyword>Class</Keyword>
            <Keyword>Pattern</Keyword>
         </Keywords>
         <Shortcut>exception</Shortcut>
      </Header>
      <Snippet>
         <Declarations>
            <Literal>
               <ID>exceptionType</ID>
               <ToolTip>Replace with the name of your new exception type.</ToolTip>
               <Default>MyNewException</Default>
            </Literal>
            <Literal>
               <ID>exceptionCircumstance</ID>
               <Default>a condition occurs</Default>
            </Literal>
         </Declarations>
         <Code Language="CSharp">
            <![CDATA[
            /// <summary>
            /// Exception thrown when $exceptionCircumstance$.
            /// </summary>            
            [Serializable]
            public class $exceptionType$ : ApplicationException
            {
               /// <summary>
               /// Initializes a new instance of the <see cref="$exceptionType$"/> class.
               /// </summary>            
               public $exceptionType$() : base() { }
               /// <summary>
               /// Initializes a new instance of the <see cref="$exceptionType$"/> class.
               /// </summary>
               /// <param name="message">The message.</param>               
               public $exceptionType$(string message) : base(message) { }
               /// <summary>
               /// Initializes a new instance of the <see cref="$exceptionType$"/> class.
               /// </summary>
               /// <param name="message">The message.</param>
               /// <param name="innerException">The inner exception.</param>               
               public $exceptionType$(string message, Exception innerException) : base(message, innerException) { }
               /// <summary>
               /// Initializes a new instance of the <see cref="$exceptionType$"/> class.
               /// </summary>
               /// <param name="info">The object that holds the serialized object data.</param>
               /// <param name="context">The contextual information about the source or destination.</param>               
               public $exceptionType$(SerializationInfo info, StreamingContext context) : base(info, context) { }
            }
            ]]>
         </Code>
      </Snippet>
   </CodeSnippet>
</CodeSnippets>